#include <signal.h>
#include "EventLoop.h"
//#include "TcpServer.h"
#include "HttpServer.h"
#include "EchoServer.h"

//gprof
static void sighandler( int sig_no )   
{   
      exit(0);   
}   

int main()
{
    signal( SIGUSR1, sighandler );//SIGUSR1 用户自定义信号 将其与信号处理函数绑定
    signal(SIGPIPE, SIG_IGN);  
	//SIGPIPE当往一个读端关闭的管道或socket连接中写数据会被触发，程序接收到SIGPIPE信号的默认行为是结束进程
	//SIG_IGN,系统自带的信号处理函数，忽略信号的处理程序,客户端发送RST包后，服务器还调用write会触发

    // EventLoop loop;
    // EchoServer echoserver(&loop, 8088);
    // echoserver.Start();
    // loop.loop();

    EventLoop loop;
    HttpServer httpserver(&loop, 8088);//注册socket 并且执行listen函数生成监听套接字
    httpserver.Start();//主要就是执行epoll_ctl语句，将监听套接字挂到epoll红黑树上
    loop.loop();//循环运行 阻塞在此
    return 0;
}